<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Concept: Developer Testing</title>
<meta name="uma.type" content="Concept">
<meta name="uma.name" content="developer_testing">
<meta name="uma.presentationName" content="Developer Testing">
<meta name="element_type" content="concept">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_ADwlAJRtEdyrdaw_xGakyw"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Concept: Developer Testing</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/concept.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">Developers regression test their code on a continuous basis to ensure that it works as expected.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/developer_testing_9974EA47.html" guid="_ByOd4O6pEduvoopEslG-4g">Developer Testing</a>
</li>
<li>
<a href="./../../../practice.tech.evolutionary_design.base/guidances/roadmaps/how_to_adopt_evolutionary_design_7CA256E4.html" guid="_irQiEOCsEdynptYdmll41Q">How to Adopt the Evolutionary Design Practice</a>
</li>
<li>
<a href="./../../../practice.tech.test_driven_development.base/guidances/roadmaps/adopt_tdd_practice_7D642D12.html" guid="_8yG48JRqEdyrdaw_xGakyw">How to Adopt the Test Driven Development Practice</a>
</li>
<li>
<a href="./../../../practice.tech.test_driven_development.base/tasks/implement_developer_tests_C61D8062.html" guid="_znlIcJR9EdyVKbgqUOtqQA">Implement Developer Tests</a>
</li>
<li>
<a href="./../../../practice.tech.test_driven_development.base/tasks/run_developer_tests_3D3E4A79.html" guid="_R7atwJfIEdyZkIR-s-Y8wQ">Run Developer Tests</a>
</li>
<li>
<a href="./../../../practice.tech.test_driven_development.base/guidances/guidelines/test_driven_development_F581182D.html" guid="_5s_DUJ03EdyQ3oTO93enUw">Test Driven Development</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><p>
    Developer testing is the act of regression testing source code by developers. This is sometimes called "unit regression
    testing" but many developer tests go beyond unit testing to address integration testing as well.
</p>
<h3>
    Testing Philosophies
</h3>
<p>
    Here are some important philosophies with regard to developer testing:
</p>
<ol>
    <li>
        The goal is to find defects. Successful tests find bugs, but correcting the bugs falls into other areas.
    </li>
    <li>
        Test early and often. The cost of change rises exponentially the longer it takes to find and then remove a defect.
        The implication is that you want to test as early as possible.
    </li>
    <li>
        Testing builds confidence. Many people fear making a change to their code because they are afraid that they will
        break it, but with a full test suite in place if you do break something you know you will detect it and then fix
        it.
    </li>
    <li>
        One test is worth a thousand opinions. You can say that your application works, but until you show the test results
        you might not be believed.
    </li>
    <li>
        Test to the risk. The riskier something is, the more it needs to be reviewed and tested. For example, you should
        invest significantly more&nbsp;effort testing a safety-critical algorithm for measuring radiation doses, and far
        less effort testing the "change font size" function of the same application.
    </li>
    <li>
        You can validate all artifacts. You can test all your artifacts, not just your source code, although the focus of
        this guidance is testing code.
    </li>
</ol>
<h3>
    Qualities of a Good Developer Test
</h3>These are the qualities of a good developer test: 
<ul class="noindent">
    <li>
        It runs fast. It has short setup, run time, and clean-up.
    </li>
    <li>
        It runs in isolation. You should be able to reorder your tests.
    </li>
    <li>
        It is understandable. Good tests have consistent and informative names and use data that makes them easy to read
        and to understand.
    </li>
    <li>
        It uses real data. For example, use copies of production data when appropriate, but remember that you'll typically
        have to create some specific "artificial" test data as well.
    </li>
    <li>
        It is minimally cohesive. The test represents one step toward your overall goal. The test should address one and
        one only issue.
    </li>
</ul></td>
</tr>
</table>
</div>
<div class="sectionHeading">More Information</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Guidelines</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/developer_testing_9974EA47.html" guid="_ByOd4O6pEduvoopEslG-4g">Developer Testing</a>
</li>
<li>
<a href="./../../../practice.tech.test_driven_development.base/guidances/guidelines/test_driven_development_F581182D.html" guid="_5s_DUJ03EdyQ3oTO93enUw">Test Driven Development</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
